import JMessage from "jmessage-react-plugin";
import Toast from "../utils/Toast.js";

// 极光通讯
export default {
  // 初始化
  init() {
    JMessage.init({
      'appkey': '1384ccd54fdc9ec8080ae708',
      'isOpenMessageRoaming': true,
      'isProduction': false,
      'channel': ''
    });
  },

  // 注册
  register({username, password}) {
    return new Promise((resolve, reject) => {
      JMessage.register({
        username,
        password,
      }, resolve, reject)
    })
  },

  // 登录
  login({username, password}) {
    return new Promise((resolve, reject) => {
      JMessage.login({
        username,
        password,
      }, resolve, reject)
    })
  },

  /**
   *  送文本信息
   * @param username  // 收信人
   * @param text  // 发送的文本
   * @param extras  // 附带额外信息
   * @returns {Promise<R>}
   */
  sendTextMessage(username, text, extras = {}) {
    return new Promise((resolve, reject) => {
      const type = 'single';  // 简单模式
      JMessage.sendTextMessage(
        {type, username, text, extras}, resolve, reject)
    })
  },

  /**
   * 极光获取历史聊天信息
   * @param {String} username  获取和谁聊天记录
   * @param from  从第几条开始获取
   * @param limit  一共要获取几条
   * @returns {Promise<R>}
   */
  getHistoryMessage(username, from, limit) {
    return new Promise((resolve, reject) => {
      let type = 'single';
      JMessage.getHistoryMessages(
        {type, username, from, limit},
        resolve, reject)
    })
  },

  /**
   * 发送图片消息
   * @param {String} username  接受者用户名
   * @param {String} path  图片路径
   * @param {Object} extras 额外信息
   * @returns {Promise<R>}
   */
  sendImageMessage(username,path,extras={}){
    return new Promise((resolve, reject) => {
      const type = 'single';
      JMessage.sendImageMessage(
        { type, username, path, extras },
        resolve, reject)
    })
  },

  /**
   * 从本地数据库获取会话列表。默认按照会话的最后一条消息时间降序排列。
   * @returns {Promise<R>}
   */
  getConversations(){
    Toast.showLoading('获取中');
    return new Promise((resolve, reject) => {
      JMessage.getConversations(res=>{
        Toast.hideLoading();
        resolve(res)
      }, reject)
    })
  },

  /**
   * 退出登录
   */
  logout(){
    JMessage.logout()
  }
}